package modeloCarmenSanDiego;

import modeloCarmenSanDiego.rangoStrategy.*;


public class Policia {
	
	private Reloj reloj;
	private RangoStrategy grado;
	private int cantidadArrestos;
	private Ciudad ciudadActual;
	
	//Constructor
	public Policia(Reloj reloj){
		this.reloj = reloj;
		this.grado = new RangoNovatoStrategy();
		this.cantidadArrestos = 0;
	}
	
	public void addArresto(){
		this.cantidadArrestos = this.cantidadArrestos + 1;
		this.actualizarRango();
	}

	public void viajarA(Ciudad otraCiudad) {
		int distanciaDeViaje = this.ciudadActual.distanciaA(otraCiudad);
		this.setCiudadActual(otraCiudad);
		this.reloj.avanzarTiempo( distanciaDeViaje / this.grado.velocidadDeViaje() );
	}

	public Ciudad getCiudadActual() {
		return this.ciudadActual;
	}

	public RangoStrategy getRango() {
		return this.grado;
	}

	public void setCiudadActual(Ciudad unaCiudad) {
		this.ciudadActual = unaCiudad;
	}
	
	//si solamente se puede aumentar de a uno el numero de arrestos, no hay manera de que no pase por esos numeros
	//teorema de bolzano creo que se llamaba
	private void actualizarRango(){
		this.grado = this.grado.actualizarRango(this.cantidadArrestos);
	}

	public boolean arrestar(Ladron ladron) {
		// TODO Auto-generated method stub
		return false;
	}
	
	public int getCantidadDeArrestos(){
		return cantidadArrestos;
	}

	public void mezclarDestinosPolicia() {
		this.ciudadActual.mezclarDestinos();
		
	}

}
